/*********************************************** 留言板使用 express 改造 ****************************************/

// 首先引入主要依赖项
const express = require('express')
const fs = require('fs')
const template = require('art-template')

// 创建服务器应用程序 相当于 http.createServer()
const app = express()

// 模拟数据列表
let commitList = [
  {name: 'Jack', msg: '今天天气好热啊！', post_time: '2021-05-07' },
  {name: 'Rose', msg: 'fly with your heart！', post_time: '2021-05-07'}
]

// 这个来处理读取第三方文件资源，相较于 node 我们手动 拼接路径来请求资源要方便的多了
app.use('/static/', express.static('./static'))

// 请求事件处理
app.get('/', function (req, res) {
  // 读取首页
  fs.readFile('./views/index.html', function (err, data) {
    if (err) {
      return res.send('404 Not found files!')
    }
    // console.log(data);
    let htmlStr = template.render(data.toString(), {
      commitList
    })
    res.send(htmlStr)
  })
})
// 留言提交页面
app.get('/post', function (req, res) {
  fs.readFile('./views/post.html', function (err, data) {
    if (err) {
      return res.send('404 Not found files!')
    }
    res.send(data.toString())
  })
})

// 留言信息 提取
app.get('/pinglun', function (req, res) {
  // console.log(req.query);
  let commitObj = {}
  commitObj.name = req.query.name
  commitObj.msg = req.query.message
  let currTime = new Date()
  commitObj.post_time = `${currTime.getFullYear()}-${(currTime.getMonth() + 1).toString().padStart(2, '0')}-${(currTime.getDate().toString().padStart(2, '0'))}`
  // console.log(commitObj);
  commitList.unshift(commitObj)
  /**
     * - 如何通过服务器让客户端重定向？
        1. 状态码设置为302临时重定向
          statusCode
        2. 在响应头中通过Location 告诉客户端往哪里重定向
          setHeader
        如果客户端发现收到服务器的响应的状态码是302就会自动去响应头中国找Location，然后对改地址发出新的请求，所以你会看到客户端自动跳转了。 
     */
  res.statusCode = 302
  res.setHeader('Location', '/')
  res.send()
})


// 监听端口，启动应用程序
app.listen('9898', function () {
  console.log('服务启动成功！请点击：http://127.0.0.1:9898 访问');
})
